package br.unicamp.ic.inf300.arena.modelo.logistico;
/**
 * Venda de Bilhetes Eletronicos para Espetaculos (Arena Entretenimento S.A.)
 * AssentoCategorizado.java
 */


public class AssentoCategorizado extends Assento {
	private ConjuntoAssento conjuntoAssento;

	public AssentoCategorizado() {
		super();
		super.setOcupado(Assento.OCUPADO);
		this.conjuntoAssento = new ConjuntoAssento();
	}

	public AssentoCategorizado(int codigo, int numero, int ocupado) {
		super(codigo, numero, ocupado);
		this.conjuntoAssento = new ConjuntoAssento();
	}

	/*
	public String getCategoriaAssento() {
		return this.conjuntoAssento.getCategoriaAssento().getCategoria();
	}
	*/

	public double getPercentualAcrescimo() {
		return this.conjuntoAssento.getPercentualAcrescimo();
	}

	public ConjuntoAssento getConjuntoAssento() {
		return conjuntoAssento;
	}

	public void setConjuntoAssento(ConjuntoAssento conjuntoAssento) {
		this.conjuntoAssento = conjuntoAssento;
	}

	/**
	 * @return <code>String</code>
	 * JUtils plugin ;-)
	 */
	public String toString()
	{
	    final String TAB = "    ";
	    
	    StringBuffer retValue = new StringBuffer();
	    
	    retValue.append("AssentoCategorizado ( ")
	        .append(super.toString()).append(TAB)
	        .append("conjuntoAssento = ").append(this.conjuntoAssento).append(TAB)
	        .append(" )");
	    
	    return retValue.toString();
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = super.hashCode();
		result = prime * result
				+ ((conjuntoAssento == null) ? 0 : conjuntoAssento.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (!super.equals(obj))
			return false;
		if (getClass() != obj.getClass())
			return false;
		final AssentoCategorizado other = (AssentoCategorizado) obj;
		if (conjuntoAssento == null) {
			if (other.conjuntoAssento != null)
				return false;
		} else if (!conjuntoAssento.equals(other.conjuntoAssento))
			return false;
		return true;
	}
}